﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OracleClient;
using bi4homev3.Entidades;

namespace bi4homev3.Acceso_a_Datos
{
    #region Clase de cracion especifica de objetos manejadores de Oracle
    public class FabricaOracleDAO : FabricaDAO
    {
        public static OracleConnection conexion = new OracleConnection("User Id=aplicacion; Password=123456;");

        #region metodos de inicio y finalizacion de conexion

        //Estos metodos se usan par abrir y cerrar la conexion por cada operacion
        //de manera de no dejar conexiones abiertas innecesariamente


        public static OracleConnection Crear()
        {
            try
            {
                if (conexion.State != ConnectionState.Open)
                    conexion.Open();
            }
            catch (Exception ex)
            {

            }

            return conexion;
        }

        public static void cerrarConexion()
        {
            try
            {
                if (conexion.State != ConnectionState.Closed)
                    conexion.Close();
            }
            catch (Exception ex)
            {

            }
        }

        #endregion

        #region metodos para obtener los objetos especificos de cada modulo de la aplicacion
        public override UsuarioDAO getUsuarioDAO()
        {
            // UsuarioOracleDAO implementa UsuarioDAO
     
            return new OracleUsuarioDAO();
        }

        
        public override CompraDAO getCompraDAO()

        {
            // CompraOracleDAO implementa CompraDAO

            return new OracleCompraDAO();
        }

        public override LocalDAO getLocalDAO()
        {
            // LocalOracleDAO implementa LocalDAO

            return new OracleLocalDAO();
        }

        public override ReporteDAO getReporteDAO()
        {
            // ReporteOracleDAO implementa ReporteDAO

            return new OracleReporteDAO();
        }

        public override MedidaDAO getMedidaDAO()
        {
            // MedidaOracleDAO implementa MedidaDAO

            return new OracleMedidaDAO();
        }

        public override ServicioDAO getServicioDAO()
        {
            // ServicioOracleDAO implementa ServicioDAO

            return new OracleServicioDAO();
        }
        #endregion

    }
    #endregion
}
